home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-04-16 | 12.6 KB | 285 lines | [TEXT/GEOL] |
- Item forwarded by STONECUTTER to HAUSER
-
- Item 1698290 12-April-90 00:42PDT
-
- From: AUSTAUX Australia - A/UX Suppt, K Sandvik
-
- To: CPLUS.DEV$ C++ Interest List--Developers
- CPLUS.APPLE$ C++ Interest List--Apple Employees
-
- Sub: USENIX C++ Conference Report
-
- Hello all,
-
- this is an informal conference report about the San Francisco USENIX C++
- conference that was held this week. Disclaimer: the personal comments are mine
- and represent my opinions only (not Apple's). Also please forget me concerning
- any typos, grammar errors and technical glitches/blunders....
-
- Anyway,
-
- EXECUTIVE SUMMARY:
-
- This year's USENIX C++ conference in San Francisco did not have any big
- surprises. The highlights were a new changed scheme of exeption handling that
- Bjarne Stroustrup presented, a new religious war between class library builders
- concerning small classes against big class trees, presentations with big
- scientific applications that made use of C++, and AT&T showed an interesting
- papers about how to dynamically link objects into runtime code. There were also
- many other papers presented about object oriented network solutions.
-
-
-
- TO BUILD OR NOT TO BUILD A TREE - THAT IS THE QUESTION
-
- James M. Coggins from University of North Carolina had a paper about building
- class libraries. He triggered a small war between class library builders with
- comments such as "Big monolithic hierarchies impose considerable overhead" and
- "You should not have to pay for what you don't use". He was aiming at class
- libraries that were structured as a big inheritance tree, style SmallTalk.
- Programmers, such as Keith Gorlan (the man behind the NIH library) did not like
- this at all...
-
- I think this is actually a good time to start thinking about if C++ libraries
- really need to be founded on the SmallTalk class hierarchy model. Maybe it is
- suitable in many cases to build small class libraries that does one thing well.
- And by using single/multiple inheritance the application developer could put
- together the final mix of classes.
-
- Another issue that Coggins talked about was the problem of Object Oriented
- Design that encourages bottom-up design. This usually leads to a lack of an
- architectural vision of the end result. This is especially true of designs
- where small libraries are combined to big ones.
-
- Coggins wanted to see more 'practical' class libraries that could be used to
- create applications, I assume that he wants more specialized class libraries,
- e.g. for scientific computing. He commented: "Build classes for sets of
- applications".
-
- For the moment those few class libraries that exists for C++ seems to be very
- monolithic an huge. Maybe it is time to start working with more tools oriented
- special class libraries.
-
- AT&T ANNOUNCES STANDARD C++ CLASS LIBRARIES
-
- Speaking of class libraries, AT&T announced that it will finally distribute
- those 'famous' C++ class libraries that they have used internally within the
- company. These libraries contain:
-
- • Bits - a Bits object that represents bit strings for bit manipulation.
- • Block - a sequence of zero or more elements, each of which is of type block.
- • Duration - a time difference class, durations can be measured and calculated.
- • Fsm - a deterministic finite state machine class that consists of a set of
- transitions between states. A transition from a given state is triggered
- by an integer input and causes a programmer-defined action routine to be
- called.
- • ipcstream - UNIX InterProcess Communication class
- • List - a linked list of zero or more elements
- • Map - a collection of elements, each contains a a key part and a
- value part (associated arrays? -Kent-).
- • Objection - a class for implementing simple error handling in C++.
- • Place, time zone information class.
- • Pool, a colletion of elements, each one is a chunk of *unspecified* type
- of contiguous memory.
- • Stopwatch - a timer class, the name tells everything.
- • String - string class.
- • Strstream - provides the iostream and streambuf classes specified for
- Strings.
- • Time - calendar date and time-of-day information
-
- Well, most of these classes are not hard at all to implement. The nice thing is
- to have a set of AT&T defined classes. This means that people could start
- writing standard class library code, and know it will be portable across
- platforms. Most of these classes are easy to port to the Mac platform anyway,
- in the case of time classes one only needs to change the time generation
- information.
-
- AT&T RELEASES INFORMATION ABOUT 2.1
-
- The next release of C++ - C++ 2.1 - is mostly a software maintenance release.
- The reference manual is also updated. Actually the this reference manual is
- accepted as the base document for X3J16 (the ANSI effort to standardize C++).
- C++ 2.1 also introduces new scoping rules and syntax for nested types. It also
- has an improved optimization of virtual tables.
-
- Those who waited for parameterized types and exeption handling, wait. C++ 2.1
- should be available now from AT&T.
-
-
- C++ AND WINDOW SYSTEMS
-
- AT&T has also announced that it will provide C++ classes for building Open Look
- applications. The class API has actually also possibilities to compile Motif
- "Look and Feel" interfaces. It could happen that the programmer could select
- easily what 'flavor' of interface they want. If this is the case it would mean
- a small breakthrough in this current holy windows war.
-
- According to the grapewine the next release of X Windows (X11R5) will have as
- one of the new features class libraries, so there's a lot of activity going on
- concerning object oriented extensions to window interfaces. All this leads
- to...
-
- GLOCKENSPIEL AND MACINTOSH PROGRAMMING
-
- I spoke with Fergal Dearle from Glockenspiel who is one of the architects
- behind CommonView, a grand attempt to provide a window class library that will
- provide support for Windows, Presentation Manager, X Windows and Macintosh
- windows programming. A kind of Grand United Theory for Windows on personal
- computers...
-
- He said that the Macintosh library part should be shipped late this year (add a
- couple of months to that). They will provide libraries that will work with
- either MPW C++ or with the Glockenspiel C++. They actually intend to port their
- C++ for MacOS. Ultimately this would mean that they also will port their
- existing/new C++ development tools for MacOS as well.
-
- Personally I don't think these common window class libraries are good - it
- leads to design cludges where the designer has to make so many compromises so
- the end result tastes like nine-month-old beer.
-
- Then again there are many corporate inhouse software departments who would love
- to use something like CommonView in order to solve their future problems with
- providing solutions to a scattered set of personal computer brands within the
- company.
-
-
- EXCEPTION HANDLING WITH C++
-
- The concept of exeption handling was one of the hot buzzwords at the
- conference. There is already a paper written by Bjarne Stroustrup and Andrew
- Koenig from AT&T, but they had to revise some parts of the specification
- because the ANSI C++ committee did not like the suggested key names. Well,
- if the committee will from now define what is right and what is wrong, expect
- the stagnation of C++...
-
- The reason why C++ needs exeption handling is how to handle error problem
- between a separately written class library and the application that makes use
- of the class. The class library is able to detect errors, but does not know how
- to signal this back to the application. The application is able to recover from
- errors, but can't detect them. By providing a syntactically defined exception
- handling in the language itself is a way to officially define a channel for
- sending exception information.
-
- The basic form is this:
-
- int f()
- {
- try {
- return g();
- }
- catch (xxii) {
- // if 'xxii' exeption occurs, we get here
- error("g() goofed: xxii");
- return 22;
- }
- }
-
- int g()
- {
- return h();
- }
-
- int h()
- {
- throw xxii(); // here make the exeption xxii to occur
- }
-
- Function f() tries function g(), if g() barfs it will send an exeption
- that catch tries to catch. The programmer is able to define those exceptions
- that it want to catch. And the exeption is triggered by the throw statement.
-
- The best thing to figure out who throw works is to compare it with a normal
- 'return' statement.
-
-
- NETWORK SOLUTION AND C++
-
- Personally I am interested in the possibilities of classes combined with
- networks. With that I mean solutions with virtual object store databases, and
- applications that access classes from the database and use them in runtime.
- This would mean big opportunities to write applications that modify themselves
- in runtime, for instance accesses classes/objects that it normally does not
- need. The classes could be 'rented' from a software house and the bill arrives
- one month later. This is also a great way to rapidly distribute object
- viruses... Beware of dynamically loaded Public Domain objects.
-
- Anyway Ravi Sethi from AT&T Laboratories presented a paper aobut adding new
- code (objects) to a running program. He called this method dynamic linking.
-
- The whole trick is to define a base class and a derived class. The function
- names that are declared virtual in the base class are type-checked statically,
- but they are bound *dynamically*.
- If we add a map that provides from the base class access to classes
- yet-to-be-derived from base class, and this map is updated when a new class
- is linked into the running program, then we could dynamically add code
- resources (sounds complicated compared with the Segment Loader in the Mac,
- -Kent-).
-
- Thus we have a fake "string" in the basic map, and when the class reads in
- the new derived class from a file for instance, it updates the string in the
- map and triggers this new class instead.
-
- Another interesting paper was about 'Fragmented Objects'. The representation of
- this object is distributed amongst processes over a network. The base for this
- is an operating system experiment called SOS. In this model the object could be
- running in various different memory locations at the same time. Hair raising...
- A so called FOG (Fragment Object Generator) was able to create these beasts.
-
- Finally Choices, the object oriented experiment operating system, was
- presented. Choices is an extremely interesting case study in how to write both
- a portable and an object oriented operating system. It is actually ported to
- the Mac II range (I think Bill Joy is still hiding somewhere in Palo Alto,
- working on similar directions with a future System V UNIX).
-
- The networking base class object in Choices is a so called "Conduit",
- a pipe-like class with input and output methods. It actually reminded a lot
- of a UNIX streams concept embedded in a class definition. Well...
-
- FAMOUS LAST WORDS
-
- Well, this conference did not have any spectacular announcements. We are
- still waiting for some final official releases of both parameterized classes
- and the exeption handling model.
-
- As it looks today there is no big leaps happening in the C++ language itself.
- It looks like AT&T and other big companies that have invested a lot in the
- language wants that the language is stable for the time being.
-
- We are still missing things like run-time access to type information in classes
- (the class:ical problem of what class type is this beast), more of practical
- browser, visualizer and debugger tools for C++, hooks to store objects in
- virtual object stores (something that Eiffel and a famous OODB company in
- Oregon are rumored to test just now), maybe some initial efforts to provide
- a standard run-time garbage collector (yes I know it is luxury...), and
- what about concurrency control for future thread-oriented tasks?
-
- Gulp, I started to sound like some of the presentators, that happily
- created new buzzwords on the flight, such as "proxy object call",
- "fragmented objects", "fine-grain object models", "remotable class,
- combination of remote and invocable!", "continuation models". As
- English is not really my native language I once had to hurry out during one of
- the breaks to the nearest book shop, and I had to consult the Websters
- dictionary in order to understand the contents of the latest session...
-
- Jim Waldo from Apollo actually suggested a price for the paper with biggest use
- of buzzwords.
-
- COMMENT OF THE CONFERENCE:
-
- "Read my LISP, no new syntax"
- -- Michael Tiemann about the GNU C++ implementation of the
- exeption handling, that actually was based on the old Stroustrup
- syntax scheme. Oops.
-
- Anyway I have to stop now, if anyone is still reading this line I really
- appreciate that you read the whole article. I highly recommend to get the
- USENIX C++ 1990 Conference proceedings from USENIX ($28).
-
- Live long and prosperous,
-
- Kent Sandvik
- Apple Australia DTS
-
-
-
-